#include <iostream>
using namespace std;
char map[22][22];
int flag[22][22];
int m,n;
int ans;
int dir[4][2]={{0,-1},{-1,0},{0,1},{1,0}};

void dfs(int x,int y)
{
	flag[x][y]=1;
	ans++;
	for(int i=0;i<4;i++){
		int xx,yy;
		xx=x+dir[i][0];
		yy=y+dir[i][1];
		if(xx<0||xx>=n||yy<0||yy>=m) continue ;
		if(flag[xx][yy]==0&&map[xx][yy]=='.'){
			dfs(xx,yy);
		}
	}
	return ;
} 

int main()
{
	while(cin>>m>>n){
		if(m==0&&n==0) break;
		int x,y;
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				cin>>map[i][j];
				flag[i][j]=0;
				if(map[i][j]=='@'){
					x=i;
					y=j;
				}
			}
		}
		ans=0;
		dfs(x,y);
		cout<<ans<<endl;
	}
	return 0;
}
